首页 > 试题广场 >

调整数组顺序使奇数位于偶数前面(一)

[编程题]调整数组顺序使奇数位于偶数前面(一)
  • 热度指数:102824 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
输入一个长度为 n 整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前面部分,所有的偶数位于数组的后面部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

数据范围:,数组中每个数的值
要求:时间复杂度 ,空间复杂度
进阶:时间复杂度 ,空间复杂度
示例1

输入

[1,2,3,4]

输出

[1,3,2,4]
示例2

输入

[2,4,6,5,7]

输出

[5,7,2,4,6]
示例3

输入

[1,3,5,6,7]

输出

[1,3,5,7,6]
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param array int整型一维数组 
# @return int整型一维数组
#
class Solution:
    def reOrderArray(self , array: List[int]) -> List[int]:
        # write code here
        a = []
        b = []
        for i in array:
            if i%2 == 0:
                a.append(i)
            if i%2 == 1:
                b.append(i)
        return b+a

发表于 2022-08-17 15:27:03 回复(0)
class Solution:
    def reOrderArray(self , array: List[int]) -> List[int]:
        # write code here
        return sorted(array, key=lambda x:x%2, reverse=True)

发表于 2022-07-03 08:41:38 回复(0)
class Solution:
    def reOrderArray(self , array: List[int]) -> List[int]:
        b=[i for i in array if i%2==1]
        c=[i for  i in array if i%2==0]
        for i in c:
             b.append(i)
        return b
发表于 2022-05-24 17:47:37 回复(0)
class Solution:
    def reOrderArray(self , array: List[int]) -> List[int]:
        # write code here
        return [i for i in array if i%2==1]+[i for i in array if i%2==0]

发表于 2022-05-10 09:33:10 回复(0)
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param array int整型一维数组 
# @return int整型一维数组
#
class Solution:
    def reOrderArray(self , array: List[int]) -> List[int]:
        res1 = []
        res2 = []
        for i in array:
            if i % 2 == 1:
                res1.append(i)
            else:
                res2.append(i)
        return res1 + res2        

发表于 2022-05-05 18:56:03 回复(0)
class Solution:
    def reOrderArray(self , array: List[int]) -> List[int]:
        # write code here
        odd = []
        even = []
        for n in array:
            if n%2:
                odd.append(n)
            else:
                even.append(n)
        return odd+even

发表于 2022-04-25 09:03:58 回复(0)
class Solution:
    def reOrderArray(self , array: List[int]) -> List[int]:
        # write code here
        list = []
        n = len(array)
        for i in array:
            if i%2 == 1:
                list.append(i)
        for i in array:
            if i%2 == 0:
                list.append(i)
        return list
发表于 2022-04-23 10:49:01 回复(0)
一种 On 写法, 空间复杂度 O1
class Solution:
    def reOrderArray(self , array: List[int]) -> List[int]:  
        # 边界情况
        if len(array) == 0: return []
        
        idx = 0 if self.checkIsEven(array[0]) else 1
        
        for i in range(1, len(array)):
            if not self.checkIsEven(array[i]):
                # 分四段求和
                array = array[:idx] + [array[i]] + array[idx:i] + array[i+1:]
                idx += 1
        return array
        
    def checkIsEven(self, num):
        return num & 1 == 0


发表于 2022-04-10 09:51:32 回复(0)
class Solution:
    def reOrderArray(self , array: List[int]) -> List[int]:
        # write code here
        n,j=len( array),0# j是个数
        for i in range(n):
            if array[i]%2==1:
                if j<i:
                    array[j:i+1]=array[i:i+1] + array[j:i]
                j+=1
        return array

发表于 2022-03-23 10:58:21 回复(0)
# 解法二:时间复杂度O(n^2),空间复杂度O(1)
# 遍历数组,当遇到奇数且前一个数为偶数时交换两个数
class Solution:
    def reOrderArray(self , array: List[int]) -> List[int]:
        for i in range(1,len(array)):
            j=i
            while array[j]%2==1 and array[j-1]%2==0:
                array[j],array[j-1]=array[j-1],array[j]
                j-=1
        return array
        # write code here

发表于 2022-03-14 11:40:58 回复(0)
class Solution:
    def reOrderArray(self , array: List[int]) -> List[int]:
        # write code here
        a1 = [i for i in array if i%2 == 1]
        a2 = [i for i in array if i%2 == 0]
        a1.extend(a2)
        return a1
发表于 2022-01-23 14:58:14 回复(0)
class Solution:
    def reOrderArray(self , array: List[int]) -> List[int]:
        o_arr = []
        j_arr = []
        for i in array:
            if i % 2 == 0:
                o_arr.append(i)
            else:
                j_arr.append(i)
        return(j_arr + o_arr)

发表于 2021-12-31 16:45:22 回复(0)
利用POP的特性,每POP一次,就append一次,顺序也不会产生变化
class Solution:
    def reOrderArray(self , array: List[int]) -> List[int]:
        # write code here
        templ = []
        i = 0
        while i<=len(array)-1:
            if array[i]%2 == 0:
                templ.append(array.pop(i))
            else:
                i += 1
        return array+templ
发表于 2021-12-24 16:48:57 回复(0)
class Solution:
    #空间复杂度 O(n)O(n)
    def reOrderArray(self , array: List[int]) -> List[int]:
        o_list,j_list=[],[]
        for i in array:
            if i%2 == 0:o_list.append(i)
            else: j_list.append(i)
        return j_list+o_list

发表于 2021-11-13 21:44:28 回复(0)
class Solution:
    def reOrderArray(self , array: List[int]) -> List[int]:
        return list(filter(lambda odd: odd%2==1,array)) + list(filter(lambda even: even%2==0,array))

发表于 2021-11-13 14:03:43 回复(0)
class Solution:
    def reOrderArray(self , array ):
        # write code here
        if array == []:
            return []
        left = []
        right = []
        for i in range(len(array)):
            if array[i] & 1:
                left.append(array[i])
            else:
                right.append(array[i])
        return left + right

发表于 2021-08-25 20:07:57 回复(0)
python 暴力解法
class Solution:
    def reOrderArray(self , array ):
        # write code here
        result =[]
        for i in array:
            if i%2 != 0:
                result.append(i)
        for j in array:
            if j%2 == 0:
                result.append(j)
        return result


发表于 2021-08-22 18:58:54 回复(0)
用了2个数组,第一个房奇数,第二个放偶数。
class Solution:
    def reOrderArray(self , array ):
        # write code here
        res = []
        res1 = []
        for i in array:
            if i%2!=0:
                res.append(i)
            else:
                res1.append(i)
        res+=res1[:]
        return res

发表于 2021-08-13 11:50:34 回复(0)